﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zarzadzanie_Restautacja.Model;

namespace Zarzadzanie_Restautacja.Controllers
{
    public class Ksiegowa : DbObject, IPracownik
    {
        #region Members 

        private String dataDzisiejsza = DateTime.Now.ToShortDateString();
        private DateTime dataSprzedTygodnia = DateTime.Now.AddDays(-7);
        private DateTime dataSprzedMiesiaca = DateTime.Now.AddDays(-30);

        #endregion Members

        #region Properties

        public int Id { get; set; }
        public string Imie { get; set; }
        public string Nazwisko { get; set; }
        public int Funkcja
        {
            get { return (int)Funkcje.Ksiegowa; }
            set { }
        }
        public string Haslo { get; set; }

        public Funkcje FunkcjaEnum
        {
            get { return (Funkcje)this.Funkcja; }
            set { this.Funkcja = (int)Funkcje.Ksiegowa; }
        }

        #endregion Properties

        #region Methods

        public decimal PoliczPrzychodDzisiejszy()
        {
            using (var context = new RestauracjaContext())
            {
                var listaZamowien = context.Zamowienia.Where(zam =>
                  zam.Status == (int)Status.Zrealizowane &&
                  zam.data.ToString().Equals(dataDzisiejsza)).ToList();
                if (listaZamowien.Count() != 0)
                {
                    return listaZamowien.Sum(zam => zam.Cena);
                }

                return 0;
            }
        }

        public decimal PoliczPrzychodTygodniowy()
        {
            using (var context = new RestauracjaContext())
            {
                if (context.Zamowienia.Where(zam => zam.Status == (int)Status.Zrealizowane &&
                 zam.data > dataSprzedTygodnia).Any())
                {
                    return context.Zamowienia.Where(zam => zam.Status == (int)Status.Zrealizowane &&
                         zam.data > dataSprzedTygodnia).Sum(zam => zam.Cena);
                }

                return 0;
            }
        }

        public decimal PoliczPrzychodMiesieczny()
        {
            using (var context = new RestauracjaContext())
            {
                if (context.Zamowienia.Where(zam => zam.Status == (int)Status.Zrealizowane &&
                    zam.data > dataSprzedMiesiaca).Any())
                {
                    return context.Zamowienia.Where(zam => zam.Status == (int)Status.Zrealizowane &&
                         zam.data > dataSprzedMiesiaca).Sum(zam => zam.Cena);
                }

                return 0;
            }
        }

        #endregion Methods

    }
}
